package kara;

import java.util.Scanner;

public class A105 {
    static int n;
    static int k;
    static int[] h;
    static int[] e;
    static int[] ne;
    static int idx=1;
    static int[] vis;
    static int count;
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        n=sc.nextInt();
        k=sc.nextInt();
        h=new int[n+1];
        vis=new int[n+1];
        e=new int[k+10];
        ne=new int[k+10];
        for(int i=1;i<=k;i++){
            int a=sc.nextInt();
            int b=sc.nextInt();
            add(a,b);
        }
        vis[1]=1;
        count=1;
       dfs(1);
       if(count==n)System.out.println(1);
       else System.out.println(-1);
    }
    static void add(int x,int y){
        e[idx]=y;
        ne[idx]=h[x];
        h[x]=idx++;
    }
    //
    static void dfs(int cur){//处理下一层访问的节点，而不是当前层，不需要终止条件而是在
        // 搜索下一个节点的时候，直接判断 下一个节点是否是我们要搜的节点。
        for(int edge=h[cur];edge!=0;edge=ne[edge]){
            int end=e[edge];
            if(vis[end]==0){
                //当前节点没有走过
                //标记
                vis[end]=1;
                //走过的数量加1
                count++;
             dfs(end);
            }
        }
    }

}
